Inleiding
Een functie is een subtype van het object gegevenstype. Technisch gezien is een functie een "callable object". Van functies in JS wordt gezegd dat ze "first class" zijn. Eigenlijk zijn het gewone objecten maar met opvraagbare gedragssemantiek erop vastgeschroefd (dat zijn de ronde haken die je achteraan aan toevoegt). We kunnen functies dus behandelen als om het even welk ander object. We kunnen het toekennen aan een variabele, doorgeven als een parameter en willen we dit object uitvoeren plaatsen we er ronde haken achter
Dmitri Pavlutin, The art of writing small and plain functions, 31 Aug 2016
Wat gaan we leren?
Imperatief / procedureel programmeren
In het begin dat je leert programmeren meek je eerst kennis met procedureel programmeren. Op die manier bestuur je een machine door een sequentiële lijst met opdrachten in te voeren. Je leert een paar grondbegrippen, zoals variabelen, toekenning, functies en objecten. Je voegt die samen in een programma dat doet wat je wilde bereiken, gooit die tegen de IDE aan bij het zien van het resultaat voel je je een tovenaar.
We beginnen met JavaScript functies zoals je ook hebt leren werken met functies in C# of een in andere procedurele of object geöriënteerde taal.
- hoe je een functie definieert en gebruikt;
- hoe je argumenten aan een functie doorgeeft;
- voor gedefinieerde functies die je 'gratis' kan gebruiken;
- het bereik van variabelen in JavaScript
- het concept dat functies ook een datatype zijn, net zoals de andere die we al gezien hebben, maar toch wel een speciaal gegevenstype;
Functioneel programmeren
Begrip van dat deze onderwerpen is nodig om interessante toepassingen van functies, die je in andere programmeertalen niet tegenkomt, te leren kennen:
- anonieme functies gebruiken;
- callbacks;
- immediate (self-invoking) functions;
- inner functions (functies gedefinieerd binnenin andere functies)
- functies die functies retourneren
- functies die zichzelf herdefiniëren;
- closures;
Een betere programmeur worden houdt in dat je meer controle krijgt over de code die je schrijft door de eenvoudigste en de meest leesbare oplossing te vinden. Naarmate je een betere programmeur wordt schrijf je kleinere functies en herbruikbare code. Tenslotte, schrijf je tests voor je code en je vertrouwt erop dat de code, die je schrijft, zal blijven doen wat ze moet doen. Niemand vindt het plezant om bugs in de code te vinden en te moeten oplossen.
Functioneel programmeren geeft ons de mogelijkheid om de complexiteit van onze programma's te verminderen door ze te herleiden tot hun eenvoudigste vorm: functies die zich gedragen als zuivere wiskundige functies. Het leren van de principes van functioneel programmeren is een geweldige aanvulling op je programmeervaardigheden. Het helpt je eenvoudige programma's met minder bugs te schrijven.
De belangrijkste begrippen van functioneel programmeren zijn pure functies
(pure functions), onveranderlijke waarden
(immutable values), samenstelling
(composition) en het binnen de perken houden van bijwerkingen
.